package main

import "fmt"

func main() {
	map1 := map[string]string{
		"name": "1111",
		"age":  "18",
	}
	fmt.Println(map1)
	map2 := make(map[string]string) // empty map
	var map3 map[string]string      // nil
	fmt.Println(map2, map3)
	// get操作  ok参数用来判断值是否存在
	if name, ok := map1["name"]; ok {
		fmt.Println(name)
	} else {
		fmt.Println("Key does not exist")
	}
	// delete操作
	delete(map1, "name")
	_, ok := map1["name"]
	fmt.Println(ok)
	// 最长字串
	println(getStr("pww"))
}

/*
	寻找最长且不含有重复字符的字串     pwwpwdw
*/
func getStr(str string) int {
	// rune相当于char,能解决中文字符串问题
	imap := make(map[rune]int)
	start := 0
	maxlen := 0
	for i, ch := range []rune(str) {
		if index, ok := imap[ch]; ok && index >= start {
			start = index + 1
		}
		// 计算到此为止的长度，如果更长则替换
		if (i - start + 1) > maxlen {
			maxlen = i - start + 1
		}
		imap[ch] = i
	}
	return maxlen
}
